//package org.jiangy.config;
//
//import jakarta.persistence.EntityManagerFactory;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
//import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
//import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
//import org.springframework.orm.jpa.JpaTransactionManager;
//import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
//import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
//import org.springframework.transaction.PlatformTransactionManager;
//import org.springframework.transaction.annotation.EnableTransactionManagement;
//
//import javax.sql.DataSource;
//
///**
// * Spring Data JPA 配置
// * 该配置类使用 spring-jdbc 的EmbeddedDatabaseBuilder API设置嵌入式HSQL数据库。
// * 然后，Spring Data 设置了一个 EntityManagerFactory，并使用 Hibernate 作为样本持久化提供者。
// * 此处声明的最后一个基础结构组件是 JpaTransactionManager。
// * 最后，该示例通过使用 @EnableJpaRepositories 注释激活 Spring Data JPA 存储库，该注释本质上带有与 XML 命名空间相同的属性。
// * 如果未配置基础包，则使用配置类所在的基础包。
// * <p>创建时间: 2024/8/14 </p>
// *
// * @author <a href="mailto:jiangliu0316@outlook.com" rel="nofollow">蒋勇</a>
// */
//@Configuration
//@EnableTransactionManagement
//public class JpaConfig {
//
//    @Bean
//    public DataSource dataSource() {
//        EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
//        return builder.setType(EmbeddedDatabaseType.HSQL).build();
//    }
//
//    @Bean
//    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
//
//        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
//        vendorAdapter.setGenerateDdl(true);
//
//        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
//        factory.setJpaVendorAdapter(vendorAdapter);
//        factory.setPackagesToScan("com.acme.domain");
//        factory.setDataSource(dataSource());
//        return factory;
//    }
//
//    @Bean
//    public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
//        JpaTransactionManager txManager = new JpaTransactionManager();
//        txManager.setEntityManagerFactory(entityManagerFactory);
//        return txManager;
//    }
//}
